//
//  34.第一个只出现一次的字符.swift
//  数据结构与算法
//
//  Created by ZERO on 2021/5/24.
//

import Foundation
/*
 题目：在一个字符串(0<=字符串长度<=10000，全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1（需要区分大小写）.（从0开始计数）
 思路：1.用字典记录字符个数O(2n)
 */
func offer_34() {
    print(Solution().firstNotRepeatingChar1("aabbcddeeff"))
}

fileprivate class Solution {
    func firstNotRepeatingChar1(_ str: String) -> Int {
        guard !str.isEmpty else { return -1 }
        var dict = [Character: Int]()
        for c in str {
            if dict[c] != nil {
                dict[c]! += 1
            } else {
                dict[c] = 1
            }
        }
        for (index, c) in str.enumerated() {
            if dict[c] == 1 {
                return index
            }
        }
        return -1
    }
}
